#pragma once

#include "Color.h"
#include "GeoExport.h"
#include "Point.h"
#include "Types.h"

class HalfEdge;
class Edge;
class Mesh;

class GEO_API Vertex {
public:
    Vertex(const Point3D& pos, Mesh* mesh);
    ~Vertex() = default;

    Point3D position() const { return _position; }
    void setPosition(const Point3D& pos) { _position = pos; }

    void setColor(const Color& color) { _color = color; }
    void setColor(int r, int g, int b) { _color = Color(r, g, b); }

    Color color() const { return _color; }

    ID id() const { return _id; }

private:
    ID _id;

    Point3D _position;
    Color _color;

    HalfEdge* _outHe = nullptr;
};
